<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="en-US">
<head>
<!-- GenHTML revision 25226-->
<meta http-equiv="Content-type" content="text/html; charset=utf-8">
<title>Querying Entities - The Java EE 6 Tutorial</title>
<meta name="robots" content="index,follow">
<meta name="robots" content="index,follow">
<meta name="date" content="2011-03-01">
<link rel="stylesheet" type="text/css" href="css/default.css">
<link rel="stylesheet" type="text/css" href="css/ipg.css">
<link rel="stylesheet" type="text/css" href="css/javaeetutorial.css">
</head>

<body>

<table border="0" cellpadding="5" cellspacing="0" width="100%">
<tbody>
   <tr valign="top">
      <td width="400px"><p class="toc level1"><a href="docinfo.html">Document Information</a></p>
<p class="toc level1 tocsp"><a href="gexaf.html">Preface</a></p>
<p class="toc level1 tocsp"><a href="gfirp.html">Part&nbsp;I&nbsp;Introduction</a></p>
<p class="toc level2"><a href="bnaaw.html">1.&nbsp;&nbsp;Overview</a></p>
<p class="toc level2"><a href="gfiud.html">2.&nbsp;&nbsp;Using the Tutorial Examples</a></p>
<p class="toc level1 tocsp"><a href="bnadp.html">Part&nbsp;II&nbsp;The Web Tier</a></p>
<p class="toc level2"><a href="bnadr.html">3.&nbsp;&nbsp;Getting Started with Web Applications</a></p>
<p class="toc level2"><a href="bnaph.html">4.&nbsp;&nbsp;JavaServer Faces Technology</a></p>
<p class="toc level2"><a href="giepx.html">5.&nbsp;&nbsp;Introduction to Facelets</a></p>
<p class="toc level2"><a href="gjddd.html">6.&nbsp;&nbsp;Expression Language</a></p>
<p class="toc level2"><a href="bnaqz.html">7.&nbsp;&nbsp;Using JavaServer Faces Technology in Web Pages</a></p>
<p class="toc level2"><a href="gjcut.html">8.&nbsp;&nbsp;Using Converters, Listeners, and Validators</a></p>
<p class="toc level2"><a href="bnatx.html">9.&nbsp;&nbsp;Developing with JavaServer Faces Technology</a></p>
<p class="toc level2"><a href="gkmaa.html">10.&nbsp;&nbsp;JavaServer Faces Technology Advanced Concepts</a></p>
<p class="toc level2"><a href="bnawo.html">11.&nbsp;&nbsp;Configuring JavaServer Faces Applications</a></p>
<p class="toc level2"><a href="gkiow.html">12.&nbsp;&nbsp;Using Ajax with JavaServer Faces Technology</a></p>
<p class="toc level2"><a href="gkhxa.html">13.&nbsp;&nbsp;Advanced Composite Components</a></p>
<p class="toc level2"><a href="bnavg.html">14.&nbsp;&nbsp;Creating Custom UI Components</a></p>
<p class="toc level2"><a href="bnafd.html">15.&nbsp;&nbsp;Java Servlet Technology</a></p>
<p class="toc level2"><a href="bnaxu.html">16.&nbsp;&nbsp;Internationalizing and Localizing Web Applications</a></p>
<p class="toc level1 tocsp"><a href="bnayk.html">Part&nbsp;III&nbsp;Web Services</a></p>
<p class="toc level2"><a href="gijti.html">17.&nbsp;&nbsp;Introduction to Web Services</a></p>
<p class="toc level2"><a href="bnayl.html">18.&nbsp;&nbsp;Building Web Services with JAX-WS</a></p>
<p class="toc level2"><a href="giepu.html">19.&nbsp;&nbsp;Building RESTful Web Services with JAX-RS</a></p>
<p class="toc level2"><a href="gjjxe.html">20.&nbsp;&nbsp;Advanced JAX-RS Features</a></p>
<p class="toc level2"><a href="gkojl.html">21.&nbsp;&nbsp;Running the Advanced JAX-RS Example Application</a></p>
<p class="toc level1 tocsp"><a href="bnblr.html">Part&nbsp;IV&nbsp;Enterprise Beans</a></p>
<p class="toc level2"><a href="gijsz.html">22.&nbsp;&nbsp;Enterprise Beans</a></p>
<p class="toc level2"><a href="gijre.html">23.&nbsp;&nbsp;Getting Started with Enterprise Beans</a></p>
<p class="toc level2"><a href="gijrb.html">24.&nbsp;&nbsp;Running the Enterprise Bean Examples</a></p>
<p class="toc level2"><a href="bnbpk.html">25.&nbsp;&nbsp;A Message-Driven Bean Example</a></p>
<p class="toc level2"><a href="gkcqz.html">26.&nbsp;&nbsp;Using the Embedded Enterprise Bean Container</a></p>
<p class="toc level2"><a href="gkidz.html">27.&nbsp;&nbsp;Using Asynchronous Method Invocation in Session Beans</a></p>
<p class="toc level1 tocsp"><a href="gjbnr.html">Part&nbsp;V&nbsp;Contexts and Dependency Injection for the Java EE Platform</a></p>
<p class="toc level2"><a href="giwhb.html">28.&nbsp;&nbsp;Introduction to Contexts and Dependency Injection for the Java EE Platform</a></p>
<p class="toc level2"><a href="gjbls.html">29.&nbsp;&nbsp;Running the Basic Contexts and Dependency Injection Examples</a></p>
<p class="toc level2"><a href="gjehi.html">30.&nbsp;&nbsp;Contexts and Dependency Injection for the Java EE Platform: Advanced Topics</a></p>
<p class="toc level2"><a href="gkhre.html">31.&nbsp;&nbsp;Running the Advanced Contexts and Dependency Injection Examples</a></p>
<p class="toc level1 tocsp"><a href="bnbpy.html">Part&nbsp;VI&nbsp;Persistence</a></p>
<p class="toc level2"><a href="bnbpz.html">32.&nbsp;&nbsp;Introduction to the Java Persistence API</a></p>
<p class="toc level3"><a href="bnbqa.html">Entities</a></p>
<p class="toc level4"><a href="bnbqa.html#bnbqb">Requirements for Entity Classes</a></p>
<p class="toc level4"><a href="bnbqa.html#bnbqc">Persistent Fields and Properties in Entity Classes</a></p>
<p class="toc level5"><a href="bnbqa.html#bnbqd">Persistent Fields</a></p>
<p class="toc level5"><a href="bnbqa.html#bnbqe">Persistent Properties</a></p>
<p class="toc level5"><a href="bnbqa.html#giqvn">Using Collections in Entity Fields and Properties</a></p>
<p class="toc level5"><a href="bnbqa.html#gkahq">Validating Persistent Fields and Properties</a></p>
<p class="toc level4 tocsp"><a href="bnbqa.html#bnbqf">Primary Keys in Entities</a></p>
<p class="toc level4"><a href="bnbqa.html#bnbqh">Multiplicity in Entity Relationships</a></p>
<p class="toc level4"><a href="bnbqa.html#bnbqi">Direction in Entity Relationships</a></p>
<p class="toc level5"><a href="bnbqa.html#bnbqj">Bidirectional Relationships</a></p>
<p class="toc level5"><a href="bnbqa.html#bnbqk">Unidirectional Relationships</a></p>
<p class="toc level5"><a href="bnbqa.html#bnbql">Queries and Relationship Direction</a></p>
<p class="toc level5"><a href="bnbqa.html#bnbqm">Cascade Operations and Relationships</a></p>
<p class="toc level5"><a href="bnbqa.html#giqxy">Orphan Removal in Relationships</a></p>
<p class="toc level4 tocsp"><a href="bnbqa.html#gjiwz">Embeddable Classes in Entities</a></p>
<p class="toc level3 tocsp"><a href="bnbqn.html">Entity Inheritance</a></p>
<p class="toc level4"><a href="bnbqn.html#bnbqo">Abstract Entities</a></p>
<p class="toc level4"><a href="bnbqn.html#bnbqp">Mapped Superclasses</a></p>
<p class="toc level4"><a href="bnbqn.html#bnbqq">Non-Entity Superclasses</a></p>
<p class="toc level4"><a href="bnbqn.html#bnbqr">Entity Inheritance Mapping Strategies</a></p>
<p class="toc level5"><a href="bnbqn.html#bnbqs">The Single Table per Class Hierarchy Strategy</a></p>
<p class="toc level5"><a href="bnbqn.html#bnbqu">The Table per Concrete Class Strategy</a></p>
<p class="toc level5"><a href="bnbqn.html#bnbqv">The Joined Subclass Strategy</a></p>
<p class="toc level3 tocsp"><a href="bnbqw.html">Managing Entities</a></p>
<p class="toc level4"><a href="bnbqw.html#bnbqy">The <tt>EntityManager</tt> Interface</a></p>
<p class="toc level5"><a href="bnbqw.html#bnbqz">Container-Managed Entity Managers</a></p>
<p class="toc level5"><a href="bnbqw.html#bnbra">Application-Managed Entity Managers</a></p>
<p class="toc level5"><a href="bnbqw.html#bnbrb">Finding Entities Using the <tt>EntityManager</tt></a></p>
<p class="toc level5"><a href="bnbqw.html#bnbrc">Managing an Entity Instance's Lifecycle</a></p>
<p class="toc level5"><a href="bnbqw.html#bnbrd">Persisting Entity Instances</a></p>
<p class="toc level5"><a href="bnbqw.html#bnbre">Removing Entity Instances</a></p>
<p class="toc level5"><a href="bnbqw.html#bnbrf">Synchronizing Entity Data to the Database</a></p>
<p class="toc level4 tocsp"><a href="bnbqw.html#bnbrj">Persistence Units</a></p>
<div id="scrolltoc" class="onpage">
<p class="toc level3 tocsp"><a href="">Querying Entities</a></p>
</div>
<p class="toc level3"><a href="gkclc.html">Further Information about Persistence</a></p>
<p class="toc level2 tocsp"><a href="gijst.html">33.&nbsp;&nbsp;Running the Persistence Examples</a></p>
<p class="toc level2"><a href="bnbtg.html">34.&nbsp;&nbsp;The Java Persistence Query Language</a></p>
<p class="toc level2"><a href="gjitv.html">35.&nbsp;&nbsp;Using the Criteria API to Create Queries</a></p>
<p class="toc level2"><a href="gkjiq.html">36.&nbsp;&nbsp;Creating and Using String-Based Criteria Queries</a></p>
<p class="toc level2"><a href="gkjjf.html">37.&nbsp;&nbsp;Controlling Concurrent Access to Entity Data with Locking</a></p>
<p class="toc level2"><a href="gkjia.html">38.&nbsp;&nbsp;Improving the Performance of Java Persistence API Applications By Setting a Second-Level Cache</a></p>
<p class="toc level1 tocsp"><a href="gijrp.html">Part&nbsp;VII&nbsp;Security</a></p>
<p class="toc level2"><a href="bnbwj.html">39.&nbsp;&nbsp;Introduction to Security in the Java EE Platform</a></p>
<p class="toc level2"><a href="bncas.html">40.&nbsp;&nbsp;Getting Started Securing Web Applications</a></p>
<p class="toc level2"><a href="bnbyk.html">41.&nbsp;&nbsp;Getting Started Securing Enterprise Applications</a></p>
<p class="toc level1 tocsp"><a href="gijue.html">Part&nbsp;VIII&nbsp;Java EE Supporting Technologies</a></p>
<p class="toc level2"><a href="gijto.html">42.&nbsp;&nbsp;Introduction to Java EE Supporting Technologies</a></p>
<p class="toc level2"><a href="bncih.html">43.&nbsp;&nbsp;Transactions</a></p>
<p class="toc level2"><a href="bncjh.html">44.&nbsp;&nbsp;Resource Connections</a></p>
<p class="toc level2"><a href="bncdq.html">45.&nbsp;&nbsp;Java Message Service Concepts</a></p>
<p class="toc level2"><a href="bncgv.html">46.&nbsp;&nbsp;Java Message Service Examples</a></p>
<p class="toc level2"><a href="gkahp.html">47.&nbsp;&nbsp;Advanced Bean Validation Concepts and Examples</a></p>
<p class="toc level2"><a href="gkeed.html">48.&nbsp;&nbsp;Using Java EE Interceptors</a></p>
<p class="toc level1 tocsp"><a href="gkgjw.html">Part&nbsp;IX&nbsp;Case Studies</a></p>
<p class="toc level2"><a href="gkaee.html">49.&nbsp;&nbsp;Duke's Tutoring Case Study Example</a></p>
<p class="toc level1 tocsp"><a href="idx-1.html">Index</a></p>
</td>
      <td width="10px">&nbsp;</td>
      <td>
         <div class="header">
             <div class="banner">
                <table width="100%" border="0" cellpadding="5" cellspacing="0">
                   <tbody>
                      <tr>
                         <td valign="bottom"><p class="Banner">The Java EE 6 Tutorial
</p></td>
                         <td align="right"  valign="bottom"><img src="graphics/javalogo.png" alt="Java Coffee Cup logo"></td>
                      </tr>
                   </tbody>
                </table>
             </div>

             <div class="header-links">
	         <a href="./index.html">Home</a> | 
<a href="../information/download.html">Download</a> | 
<a href="./javaeetutorial6.pdf">PDF</a> | 
<a href="../information/faq.html">FAQ</a> | 
<a href="http://download.oracle.com/javaee/feedback.htm">Feedback</a>

             </div>
             <div class="navigation">
                 <a href="bnbqw.html"><img src="graphics/leftButton.gif" border="0" alt="Previous" title="Previous"></a>
                 <a href="p1.html"><img src="graphics/upButton.gif" border="0" alt="Contents" title="Contents"></a>
                 <a href="gkclc.html"><img src="graphics/rightButton.gif" border="0" alt="Next" title="Next"></a>
             </div>
         </div>

	 <div class="maincontent">      	 
             

<a name="gjise"></a><h2>Querying Entities</h2>
<a name="indexterm-1667"></a><a name="indexterm-1668"></a><p>The Java Persistence API provides the following methods for querying entities.</p>


<ul><li><p>The Java Persistence query language (JPQL) is a simple, string-based language similar to SQL used to query entities and their relationships. See <a href="bnbtg.html">Chapter&nbsp;34, The Java Persistence Query Language</a> for more information.</p>

</li>
<li><p>The Criteria API is used to create typesafe queries using Java programming language APIs to query for entities and their relationships. See <a href="gjitv.html">Chapter&nbsp;35, Using the Criteria API to Create Queries</a> for more information.</p>

</li></ul>
<p>Both JPQL and the Criteria API have advantages and disadvantages.</p>

<p>Just a few lines long, JPQL queries are typically more concise and
more readable than Criteria queries. Developers familiar with SQL will find it easy to
learn the syntax of JPQL. JPQL named queries can be defined in
the entity class using a Java programming language annotation or in the application&rsquo;s deployment
descriptor. JPQL queries are not typesafe, however, and require a cast when retrieving
the query result from the entity manager. This means that type-casting errors may
not be caught at compile time. JPQL queries don&rsquo;t support open-ended parameters.</p>

<p>Criteria queries allow you to define the query in the business tier of
the application. Although this is also possible using JPQL dynamic queries, Criteria queries
provide better performance because JPQL dynamic queries must be parsed each time they
are called. Criteria queries are typesafe and therefore don&rsquo;t require casting, as JPQL
queries do. The Criteria API is just another Java programming language API and
doesn&rsquo;t require developers to learn the syntax of another query language. Criteria queries
are typically more verbose than JPQL queries and require the developer to create
several objects and perform operations on those objects before submitting the query to the
entity manager.</p>


         </div>
         <div class="navigation">
             <a href="bnbqw.html"><img src="graphics/leftButton.gif" border="0" alt="Previous" title="Previous"></a>
             <a href="p1.html"><img src="graphics/upButton.gif" border="0" alt="Contents" title="Contents"></a>
             <a href="gkclc.html"><img src="graphics/rightButton.gif" border="0" alt="Next" title="Next"></a>
         </div>

         <div class="copyright">
      	    <p>Copyright &copy; 2011, Oracle and/or its affiliates. All rights reserved. <a href="docinfo.html">Legal Notices</a></p>
      	 </div>

      </td>
   </tr>
</tbody>
</table>
</body>
</html>

